Graphics pipelines may facilitate the visual output of content on computing systems. In one example, the graphics pipeline is represented as a series of stages including various “shader” stages (e.g., vortex, hull, domain, geometry and/or pixel shader stages) that establish the position, hue, saturation, brightness, and contrast of the pixels, vertices, and/or textures used to construct a final image. An unordered access view (UAV) may be used by the shader stages to buffer/store intermediate surface information prior to the transfer of final images to a render target that is output via a display/screen.
During operation, a given shader stage might write to and/or read from the UAV via one or more draw calls. Because the UAV may be shared among multiple shader stages, concerns over read-after-write (RAW) hazards associated with “consumer” draw calls from one shader stage accessing information in the UAV prior to completion of “producer” draw calls from another shader stage. To protect against such hazards, conventional solutions may use a software module running on a central processing unit (CPU) at the application programming interface (API) level to flush out the entire graphics pipeline when a draw call dependency is detected. Such an approach may insert relatively large “bubbles” into the pipeline and in turn have a negative impact on efficiency, performance, power consumption and/or battery life.